package com.gxuwz.attend.web.servlet;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.gxuwz.attend.context.AppContext;
import com.gxuwz.attend.service.LoginService;
import com.gxuwz.attend.entity.Admin;
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.List;

/**
 * 用户管理控制器（页面控制器）
 * 注意：页面控制器是负责指特定动作处理请求的Servlet对象,一般地，
 * MIS(信息系统)的一个模块(module)包括处理CRUD等类型的动作请求。
 *   前端控制器是负责整个站点所有请求处理的（Servlet和Filter）对象，主流的MVC框架都是基于Servlet或者Filter实现
 *   典型web MVC框架的包括:基于Servlet的springMVC和基于Filter的struts2.
 * 基于Servlet实现的页面控制器都必须继承httpServlet.通常重写doGet|doPost方法。
 * 但是要注意：考虑servlet-api的版本，比如servlet2.5、servlet 6.0等,不同的tomcat支持servlet-api的版本。
 * Note:
 * 1:表示功能模块对应页面的变量，变量命名为view_[add|edit|list]
 * 2:在init()方法中实例化业务逻辑service组件
 */
@WebServlet(name = "userServlet",urlPatterns = {"/user"})
public class UserServlet extends HttpServlet {


    private LoginService userService;
    private final ObjectMapper objectMapper = new ObjectMapper(); // JSON 处理器
    @Override
    public void init() throws ServletException {
        super.init();
        userService= AppContext.getBean(LoginService.class);
    }
    //3:重写doGet|doPost方法

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        int page = Integer.parseInt(request.getParameter("page"));
        int size = Integer.parseInt(request.getParameter("size"));
        int offset = (page - 1) * size;
        List<Admin> admins;
        if (username == null || username.isEmpty()) {
            System.out.println("-1");
            admins = userService.getAllUsers(size, offset);
        } else {
            admins = userService.findUsersByUsername(username, size, offset);
            System.out.println("-2");
        }

        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");

        String json = objectMapper.writeValueAsString(admins);
        response.getWriter().write(json);
    }

    protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String userId = request.getParameter("id");
        System.out.println(userId);
        boolean rs = userService.deleteUser(userId);
        if (rs) {
            System.out.println("删除成功");
        } else {
            System.out.println("删除失败");
        }
        System.out.println(userId);

    }

    /**
     * 解析request参数并转换为POJO对象
     * @param req
     */


}
